package net.oschina.app.ui.activity.me;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

import net.oschina.app.R;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * Created by Administrator on 2017/1/13.
 */

public class HeadPictureDialog extends Dialog {

    private Button no;//取消按钮
    private String noStr;    //取消文本的显示内容
    private String titleStr;//从外界设置的title文本

    private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
    private onChangeHeadOnClickListener mOnChangeHeadOnClickListener;//更改头像被点击了的监听器
    private onCheckHeadOnClickListener mOnCheckHeadOnClickListener;//查看大头像被点击了的监听器


    private Button change;  //更改头像
    private Button check;   //查看大头像
    private String changeStr,checkStr;  //外界设置两个Button的内容

    @BindView(R.id.tv_dialog_title)
    TextView mTvDialogTitle;
    @BindView(R.id.btn_change_head)
    Button mBtnChangeHead;
    @BindView(R.id.btn_check_big_head)
    Button mBtnCheckBigHead;
    @BindView(R.id.tv_head_cancel)
    Button mTvHeadCancel;

    public HeadPictureDialog(Context context) {
        this(context, 0);
    }

    public HeadPictureDialog(Context context, int themeResId) {
        super(context, R.style.MyDialog);
    }


    /**
     * 设置取消按钮的显示内容和监听
     *
     * @param str
     * @param onNoOnclickListener
     */
    public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) {
        if (str != null) {
            noStr = str;
        }
        this.noOnclickListener = onNoOnclickListener;
    }

    /**
     * 设置更改头像按钮和显示内容和监听
     *
     * @param str
     * @param onChangeHeadOnClickListener
     */
    public void setChangeHeadOnClickListener(String str, onChangeHeadOnClickListener onChangeHeadOnClickListener) {
        if (str != null) {
            changeStr = str;
        }
        this.mOnChangeHeadOnClickListener = onChangeHeadOnClickListener;
    }

    /**
     * 设置查看大头像按钮显示内容和监听
     *
     * @param str
     * @param onCheckHeadOnClickListener
     */
    public void setCheckHeadOnClickListener(String str, onCheckHeadOnClickListener onCheckHeadOnClickListener) {
        if (str != null) {
            checkStr = str;
        }
        this.mOnCheckHeadOnClickListener = onCheckHeadOnClickListener;
    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_me_userhead_dialog);

        //按空白处能取消动画
        setCanceledOnTouchOutside(true);

        initView();
        initData();
        initEvent();

        //获取Window的参数
        Window window = getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
        params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        params.width = ViewGroup.LayoutParams.WRAP_CONTENT;
        params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
    }

    private void initView() {
        ButterKnife.bind(this);
    }

    /**
     * 从外界Activity为Dialog设置标题
     *
     * @param title
     */
    public void setTitle(String title) {
        titleStr = title;
    }

    //赋值
/*************************************************************************************/
    private void initData() {
        //如果用户自定了title和message
        if (titleStr != null) {
            mTvDialogTitle.setText(titleStr);
        }
        if (noStr != null) {
            mTvHeadCancel.setText(noStr);
        }
        if (changeStr != null) {
            mBtnChangeHead.setText(changeStr);
        }
        if (checkStr != null) {
            mBtnCheckBigHead.setText(checkStr);
        }
    }

    //设置监听器回调  取消按钮，更改头像按钮，查看大头像按钮
    /***********************************************************************************/
    private void initEvent() {
        //设置取消按钮被点击后，向外界提供监听
        mTvHeadCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (noOnclickListener != null) {
                    noOnclickListener.onNoClick();
                }
            }
        });

        //设置更改头像按钮被点击后，向外界提供监听
        mBtnChangeHead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnChangeHeadOnClickListener != null) {
                    mOnChangeHeadOnClickListener.onChangeClick();
                }
            }
        });

        //设置查看大头像按钮被点击后，向外界提供监听
        mBtnCheckBigHead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnCheckHeadOnClickListener != null) {
                    mOnCheckHeadOnClickListener.onCheckClick();
                }
            }
        });
    }

    //设置接口
/********************************************************************************/
    /**
     * 设置取消被点击的接口
     */
    public interface onNoOnclickListener {
        public void onNoClick();
    }

    /**
     * 设置更改头像被点击的接口
     */
    public interface onChangeHeadOnClickListener {
        public void onChangeClick();
    }

    /**
     * 设置查看大头像被点击的接口
     */
    public interface onCheckHeadOnClickListener {
        public void onCheckClick();
    }

}
